Included
Comenzamos encendiendo la máquina y haciendo un escaneo rápido y sigiloso para enumerar puertos abiertos con nmap:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.129.95.185 -oG allPorts
Enumeración
Como solo está el puerto 80 abierto vamos a lanzarle un escaneo exhaustivo para identificar la version y el servicio que corren para este puerto.
Y vemos que nos lleva a ?file=home.php lo cual es algo raro, veamos con whatweb lo que nos reporta:
Vemos que es un redirect a una web Titan Gears:
Explotación
Es algo sencillo intuir que la variable file es vulnerable un Directory Path Trasversal, así que tratamos de leer el /etc/passwd:
Efectivamente podemos ver su contenido, si revisamos el código fuente de la página tenemos que el siguiente código php no está sanitizado.
if ($_GET['file']) {
include($_GET['file']);
} else {
header("Location: http://$_SERVER[HTTP_HOST]/index.php?file=home.php");
}
No seria un código sanitizado y nos permitió un LFI
¿Qué es un LFI?
Local file inclusion (also known as LFI) is the process of including files, that are already locally present on the server, through the exploitation of vulnerable inclusion procedures implemented in an application.
Lo sabemos porque pudimos cargar el /etc/passwd que es un LFI
if ($_GET['file']) {
include( __DIR__ . $_GET['file']);
} else {
header("Location: http://$_SERVER[HTTP_HOST]/index.php?file=home.php");
}
Aquí solo carga localmente dentro de /var/www/html
El LFI nos dice que hay
tftp:x:110:113:tftp daemon,,,:/var/lib/tftpboot:/usr/sbin/nologin
¿Qué es TFTP?
Buscando en Google encontramos que tftp significa Trivial File Transfer Protocol (TFTP) y es un protocolo que provee de un servicio básico de transferencia de archivos que no requiere de autenticación por parte del usuario. Usado como alternativa para aplicaciones que no requieren sofisticadas interacciones dadas por FTP.
Este servicio opera por UDP
nmap -p- --open -T5 -v -n -sU 10.129.95.185
Para poder usar TFTP usaremos la herramienta tftp-hpa
Nos conectamos y podemos ver los comandos:
Y vemos PUT, entonces esto nos permite subir archivos, por ejemplo subir un reverse shell en php:
❯ tftp 10.129.95.185
tftp> put li.php
Nos ponemos en escucha con ncat y obtenemos la shell:
Somos www-data y si tratamos de listar la user.txt no podremos por falta de permisos.
Tendremos que hacer User Pivoting, devolviendonos al directorio de la web si listamos los archivos ocultos encontramos un .htaccess y un .htpasswd
Y esto nos ha revelado las credenciales del usuario mike:
Siendo mike abremos completado la intrusion.
Escalada
Enumerando un poco la máquina vemos que estamos en el grupo LXD, y si hacemos una rápida búsqueda en searchsploit encontraremos la herramienta desarrollada por S4vitar:
La podemos descargar y necesitaremos entonces una imagen de alpine para poder ejecutar el exploit que conseguiremos con wget y buscando en internet.
wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
Dentro del directorio /tmp tendremos todo lo necesario para ejecutar la escalada:
Ejecutamos el script y le pasamos la imagen de alpine:
Ahora si nos vamos al directorio /mnt tendremos el sistema de archivos de la máquina montada en nuestro contenedor, y en el contenedor nosotros somo root entonces habremos completado la máquina.
